#include "Arandela.h"
#include <iostream>

Arandela::Arandela(double x, double y, double ancho, double alto, string pathImagen) :
		Elemento(x, y, ancho, alto, pathImagen) {
	// Creacion de la arandela
	this->posSogaX = 0;
	this->posSogaY = 0;
	this->sogaUnida = NULL;
	this->sogaInicial = true;
}

Arandela::~Arandela() {
}

void Arandela::rotar(double angulo) {
}


bool Arandela::aceptaSoga(){
	return true;
}

void Arandela::mover(double centroX, double centroY) {
	Elemento::mover(centroX, centroY);
	if (this->sogaUnida != NULL) {
		if (this->sogaInicial) {
			this->sogaUnida->setPosicionInicial(this->getX()+
					this->getAncho()*PROPORCION_SOGA_ARANDELA_X + this->posSogaX,
					this->getY() + this->getAlto()* PROPORCION_SOGA_ARANDELA_Y + this->posSogaY);
		} else {
			this->sogaUnida->setPosicionFinal(this->getX()+
					this->getAncho()*PROPORCION_SOGA_ARANDELA_X + this->posSogaX,
					this->getY() + this->getAlto()* PROPORCION_SOGA_ARANDELA_Y + this->posSogaY);
		}
	}
}

void Arandela::agregarSogaInicial(Elemento* soga) {
	soga->setPosicionInicial(this->getX()+
			this->getAncho()*PROPORCION_SOGA_ARANDELA_X + this->posSogaX,
			this->getY() + this->getAlto()* PROPORCION_SOGA_ARANDELA_Y + this->posSogaY);
	this->sogaUnida = soga;
	this->sogaInicial = true;
}

void Arandela::agregarSogaFinal(Elemento* soga) {
	soga->setPosicionFinal(this->getX()+
			this->getAncho()*PROPORCION_SOGA_ARANDELA_X + this->posSogaX,
			this->getY() + this->getAlto()* PROPORCION_SOGA_ARANDELA_Y + this->posSogaY);
	this->sogaUnida = soga;
	this->sogaInicial = false;
}


void Arandela::eliminarSoga(Elemento* soga) {
	this->sogaUnida = NULL;
}

int Arandela::seSuperpone(Elemento* elemento) {
	if (elemento->getTipo() == "soga")
		return 0;
	return 2;
}

void Arandela::eliminarReferencias(list<Elemento*>* elementosCanvas) {
	pair<Elemento*, Elemento*> extremosSoga;
	if (this->sogaUnida) {
		this->sogaUnida->eliminarReferencias(elementosCanvas);
		delete this->sogaUnida;
	}

}
